13.3 Настройка PIMv6-SM
13.3.1 Обзор
Введение в функциональность
Protocol Independent Multicasting-Sparse Mode для IPv6 (PIMv6-SM) — протокол маршрутизации для multicast вещания, предназначенный для эффективной работы через Wide Area Networks (WAN) с редким распределением групп. Он помогает узлам сети, расположенным географически в разных местах, экономить пропускную способность и снижать трафик, одновременно доставляя один поток информации в несколько точек назначения.
PIMv6-SM использует модель multicast вещания IPv6 с инициацией членства со стороны получателя, поддерживая как общие, так и кратчайшие деревья маршрутизации, а также использует механизмы "мягкого состояния" для адаптации к изменяющимся условиям сети. Он опирается на протокол сбора топологии для заполнения таблицы маршрутизации multicast потоков маршрутами.
Принцип работы
Модуль PIMv6-SM основывается на следующем стандарте IETF: RFC 4601.
Терминология:
- Rendezvous Point (RP) - Точка встречи (RP) — маршрутизатор, настроенный как корень дерева распределения для multicast группы. Сообщения Join от получателей отправляются в направлении RP, а данные от отправителей направляются к RP, чтобы получатели могли обнаруживать отправителей и получать предназначенный для группы трафик.
- Multicast Routing Information Base (MRIB) - MRIB — таблица multicast топологии полученная из таблицы маршрутизации unicast. В PIMv6-SM MRIB используется для определения маршрутов отправки сообщений Join/Prune, а также для предоставления метрик маршрутизации.
- Reverse Path Forwarding (RPF) — концепция оптимизированной формы широковещания, при которой маршрутизатор принимает пакет от SourceA через интерфейс IF1 только в том случае, если IF1 является интерфейсом, который маршрутизатор использовал бы для достижения SourceA. Определение правильности интерфейса происходит через консультацию с таблицами маршрутизации для однонаправленного трафика (unicast). Пакет, поступивший через интерфейс IF1, пересылается, потому что таблица маршрутизации указывает этот интерфейс как кратчайший путь к сети. Таблица маршрутизации однонаправленного трафика маршрутизатора определяет кратчайший путь для multicast пакетов. Поскольку маршрутизатор принимает пакет только от одного соседа, он распространяет пакет только один раз, что означает, что (предполагая точку-точку в каналах) каждый пакет передается по каждому каналу один раз в каждом направлении.
- Tree Information Base (TIB) — коллекция состояния на маршрутизаторе PIM, хранящая состояние всех деревьев распределения multicast потоков на этом маршрутизаторе. Он создается путем получения сообщений Join/Prune, сообщений Assert и информации MLD от локальных хостов..
- Upstream/Downstream - Вверх/вниз по дереву относительно его корня, который может быть либо источником, либо RP.
- Source-Based Trees - В концепции деревьев, основанных на источнике (Source-Based Trees), пути передачи данных основываются на кратчайшем однонаправленном пути к источнику. Если метрика однонаправленной маршрутизации — это количество переходов, то ветви деревьев, основанных на источнике, будут иметь минимальное количество переходов. Если метрика — задержка, то ветви будут иметь минимальную задержку. Для каждого источника multicast потока существует соответствующее дерево, которое напрямую соединяет источник со всеми получателями. Весь трафик к участникам ассоциированной группы проходит по дереву, созданному для их источника. Деревья, основанные на источнике, имеют две записи с перечнем исходящих интерфейсов — адрес источника и multicast-группу.
- Shared Trees - Общие деревья или деревья RP (RPT) опираются на центральный маршрутизатор, называемый точкой rendezvous (RP), который получает весь трафик от источников и пересылает его получателям. Не все хосты могут быть получателями. Для каждой multicast-группы существует одно дерево, независимо от числа источников. Только маршрутизаторы на этом дереве знают о группе, и информация отправляется только заинтересованным получателям. С RP получатели имеют точку подключения, даже если источник не существует. Общее дерево является однонаправленным, и информация течет только от RP к получателям. Если хост, отличный от RP, должен отправить данные по дереву, данные должны сначала быть туннелированы к RP, а затем переданы через multicast рассылку участникам. Это означает, что даже если получатель является также источником, он может использовать дерево только для получения пакетов от RP, но не для отправки пакетов к RP (если только источник не находится между RP и получателями).
- Bootstrap Router (BSR) - Когда новый multicast отправитель начинает отправлять данные или новый получатель начинает отправлять сообщение Join к RP для этой multicast-группы, ему нужно знать следующий маршрутизатор на пути к RP. BSR (Bootstrap Router) предоставляет информацию о отображении группы в RP всем маршрутизаторам PIMv6 в домене, позволяя им сопоставить правильный адрес RP.
- Sending out Hello Messages - маршрутизаторы PIMv6 периодически отправляют Hello сообщения для обнаружения соседних маршрутизаторов PIMv6. Hello сообщения передаются с использованием мультикастового адреса ff02::d (группа ALL-PIMv6-ROUTERS). Маршрутизаторы не отправляют подтверждения о получении Hello сообщения. Значение hold time определяет продолжительность времени, в течение которого информация остается действительной. В PIMv6-SM downstream-получатель должен присоединиться к группе, прежде чем трафик будет перенаправлен через интерфейс.
- Electing a Designated Router (DR) - В сети с несколькими маршрутизаторами один из них выбирается для выполнения роли назначенного маршрутизатора (DR) на определенный период времени. DR отвечает за отправку сообщений Join/Prune к RP для локальных участников..
- Determining the RP - PIMv6-SM использует маршрутизатор Bootstrap (BSR) для отправки сообщений Bootstrap и распространения информации о RP. Сообщения передаются мультикастом группе на каждом канале. Если BSR не обнаружен, маршрутизаторы распространяют объявления по домену. Маршрутизатор с наивысшим приоритетом (если приоритеты одинаковы, применяется более высокий IPv6-адрес) выбирается в качестве RP. Маршрутизаторы принимают и сохраняют сообщения Bootstrap, исходящие от BSR. Когда DR получает уведомление о членстве от MLD (или данные) напрямую подключенного хоста для группы, для которой у него нет записи, DR отображает адрес группы на одного из кандидатных RP, которые могут обслуживать эту группу. Затем DR отправляет сообщение Join/Prune к этому RP. В небольшом домене RP также может быть настроен статически.
- Joining the Shared Tree - Чтобы присоединиться к multicast-группе, хост отправляет сообщение MLD своему маршрутизатору, после чего маршрутизатор может начать принимать multicast трафик для этой группы. Маршрутизатор отправляет сообщение Join своему соседу PIMv6 вверх по потоку в сторону RP. Когда маршрутизатор получает сообщение Join от downstream-маршрутизатора, он проверяет, существует ли состояние для группы в своей таблице маршрутизации для multicast трафика. Если состояние уже существует, сообщение Join достигло общего дерева, и интерфейс, с которого было получено сообщение, добавляется в список исходящих интерфейсов. Если состояние не существует, создается запись, интерфейс добавляется в список исходящих интерфейсов, и сообщение Join снова отправляется в сторону RP.
- Sending Register-Stop Messages - Когда RP начинает получать трафик от источника, как в виде сообщений Register, так и в виде неинкапсулированных IPv6 пакетов, он отправляет сообщение Register-Stop маршрутизатору DR. Это уведомляет DR о том, что трафик теперь принимается как стандартные IPv6 multicast-пакеты на SPT. Когда DR получает это сообщение, он прекращает инкапсуляцию трафика в сообщения Register.
- Pruning the Interface - Маршрутизаторы, подключенные к получателям, отправляют сообщения Prune к RP, чтобы разорвать связь между источником и RP. Когда RP получает сообщение Prune, он больше не пересылает трафик от источника, указанного в сообщении Prune. Если все участники multicast-группы были отрезаны, состояние MLD на DR удаляется, и интерфейс исключается из списков Source и Group этой группы.
- Forwarding Multicast Packets - Маршрутизаторы PIMv6-SM пересылают multicast трафик на все интерфейсы, которые ведут к получателям, явно присоединившимся к multicast-группе. Сообщения отправляются на адрес группы в локальной подсети и имеют значение Time to Live (TTL) равное 1. Маршрутизатор выполняет проверку RPF и пересылает пакет. Трафик, поступивший на правильный интерфейс, пересылается на все исходящие интерфейсы, ведущие к downstream-получателям, если downstream-маршрутизатор отправил сообщение Join этому маршрутизатору или является членом этой группы.
13.3.2 Конфигурация
Настройка General PIMv6 Sparse-mode ( With static RP)
PIMv6-SM — протокол мягкого состояния. Основное требование: включить PIMv6-SM на нужных интерфейсах и правильно настроить RP (статически или динамически). Все состояния multicast групп поддерживаются динамически на основе сообщений MLD Report/Leave и PIMv6 Join/Prune.
В настоящее время поддерживается только один RP для всех multicast-групп (ff00::/8).
Этот раздел предоставляет примеры конфигурации PIMv6-SM для двух соответствующих сценариев.
В этом примере, используя приведенную ниже топологию, Switch1 является точкой rendezvous (RP), и все маршрутизаторы статически настроены с информацией о RP. При настройке RP убедитесь, что:
- Каждый маршрутизатор включает команду
ipv6 pim rp-address 2001:1::1, даже если к нему не подключены ни источники, ни члены группы. - Для области группы в домене PIMv6 должен быть только один адрес RP.
- Все интерфейсы, работающие с PIMv6-SM, должны иметь включенный режим sparse-mode.

Рисунок 13-1: PIMv6 Sparse-mode
РИсунок отображает топологию сети, используемую в этих примерах.
Следующую конфигурацию следует применить ко всем коммутаторам, если идентификатор коммутатора не указан.
Шаг 1: Войти в режим конфигурации
Switch# configure terminal
Шаг 2: Включить IPv6 и мультимедийную маршрутизацию IPv6 глобально
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
Шаг 3: Войти в режим конфигурации интерфейса и настроить атрибуты интерфейса
Настройка интерфейса для Switch1:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:1::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Настройка интерфейса для Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:2::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::2/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Шаг 4: Создать статические маршруты для unicast
Настройка для Switch1:
Switch(config)# ipv6 route 2001:2::/64 2001:9::2
Настройка для Switch2:
Switch(config)# ipv6 route 2001:1::/64 2001:9::1
Шаг 5: Настроить статический адрес RP
Switch(config)# ipv6 pim rp-address 2001:1::1
Шаг 6: Выйти из режима конфигурации
Switch(config)# end
Шаг 7: Проверка
Настройте все маршрутизаторы с той же командой ipv6 pim rp-address 2001:1::1, как показано выше.
Используйте следующие команды для проверки конфигурации RP, деталей интерфейса и таблицы multicast маршрутизации:
Детали RP
На Switch1 команда show ipv6 pim sparse-mode rp mapping показывает, что 2001:1::1 является RP для всех multicast-групп ff00::/8 и настроен статически. Все остальные маршрутизаторы будут иметь аналогичный вывод.
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
Group(s): ff00::/8, Static
RP: 2001:1::1
Uptime: 00:00:04
Embedded RP Groups:
Детали интерфейса
Команда show ipv6 pim sparse-mode interface отображает детали интерфейса для Switch1:
Switch# show ipv6 pim sparse-mode interface
Interface VIFindex Ver/ Nbr DR
Mode Count Prior
eth-0-1 2 v2/S 0 1
Address : fe80::fc94:efff:fe96:2600
Global Address: 2001:1::1
DR : this system
eth-0-9 0 v2/S 0 1
Address : fe80::fc94:efff:fe96:2600
Global Address: 2001:9::1
DR : this system
Таблица маршрутизации IPv6 Multicast
Команда show ipv6 pim sparse-mode mroute detail отображает таблицу маршрутизации для IPv6 multicast.
Показать результат на Switch1:
Switch# show ipv6 pim sparse-mode mroute detail
IPv6 Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
*, ff0e::1234:5678
Type: (*,G)
Uptime: 00:01:37
RP: 2001:1::1, RPF nbr: None, RPF idx: None
Upstream:
State: JOINED, SPT Switch: Enabled, JT: off
Macro state: Join Desired,
Downstream:
eth-0-1:
State: NO INFO, ET: off, PPT: off
Assert State: NO INFO, AT: off
Winner: ::, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth-0-1
Показать результат на Switch2:
Switch# show ipv6 pim sparse-mode mroute detail
IPv6 Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
*, ff0e::1234:5678
Type: (*,G)
Uptime: 00:00:06
RP: 2001:1::1, RPF nbr: None, RPF idx: None
Upstream:
State: JOINED, SPT Switch: Enabled, JT: off
Macro state: Join Desired,
Downstream:
eth-0-1:
State: NO INFO, ET: off, PPT: off
Assert State: NO INFO, AT: off
Winner: ::, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth-0-1
Настройка General PIMv6 Sparse-mode ( With dynamic RP)
Статическая настройка RP подходит для небольшой, стабильной PIMv6 области; однако, она не является практичной для большой и изменяющейся сети. В такой сети, если RP выйдет из строя, администратору сети может потребоваться изменить статические настройки на всех маршрутизаторах PIMv6. Другой причиной для выбора динамической настройки является увеличение трафика маршрутизации, что может привести к изменению RP.
Для динамического поддержания информации о RP используется механизм BSR. Для динамической настройки RP в вышеописанном сценарии, Switch1 на порту eth-0-1 и Switch2 на порту eth-0-9 настроены как кандидат RP с помощью команды ipv6 pim rp candidate. Switch2 на порту eth-0-9 также настроен как кандидат BSR. Поскольку никакой другой маршрутизатор не настроен как кандидат BSR, Switch2 становится маршрутизатором BSR и несет ответственность за отправку информации о группах и RP на все остальные маршрутизаторы в этой области PIMv6.
Следующую конфигурацию следует применить на всех коммутаторах, если идентификатор коммутатора не указан.
Шаг 1: Вход в режим настройки
Switch# configure terminal
Шаг 2: Включение IPv6 и глобальной маршрутизации для IPv6 multicast
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
Шаг 3: Вход в режим настройки интерфейса и установка атрибутов интерфейса
Настройка интерфейсов для Switch1:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:1::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Настройка интерфейсов для Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:2::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::2/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Шаг 4: Создание статических маршрутов для unicast
Настройка для Switch1:
Switch(config)# ipv6 route 2001:2::/64 2001:9::2
Настройка для Switch2:
Switch(config)# ipv6 route 2001:1::/64 2001:9::1
Шаг 5: Настройка кандидата RP
Настройка для Switch1:
Switch(config)# ipv6 pim rp-candidate eth-0-1
Настройка для Switch2:
Switch(config)# ipv6 pim rp-candidate eth-0-9
Шаг 6: Настройка кандидата BSR
Настройка для Switch2:
Switch(config)# ipv6 pim bsr-candidate eth-0-9
Маршрутизатор с наивысшим приоритетом выбирается как RP. Если два или более маршрутизаторов имеют одинаковый приоритет, используется хеш-функция в механизме BSR для выбора RP, чтобы убедиться, что все маршрутизаторы в области PIMv6 используют одинаковый RP для одной и той же группы.
Шаг 7: Выход из режима настройки
Switch(config)# end
Шаг 8: Проверка
Отображение соответствия группы PIMv6 с RP
Используйте команду show ip pim sparse-mode rp mapping для отображения информации о соответствии группы и RP. Вывод показывает информацию о кандидатах RP. Для диапазона групп ff00::/8 есть два кандидата RP. Кандидат RP 2001:1::1 имеет стандартный приоритет 192, в то время как кандидат RP 2001:9::2 настроен с приоритетом 2. Поскольку кандидат RP 2001:1::1 имеет более высокий приоритет, он выбирается как RP для группы multicast ff00::/8.
Отображение результата на Switch2:
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::2, via bootstrap, priority 2
Uptime: 00:00:32, expires: 00:02:02
RP: 2001:1::1
Info source: 2001:1::1, via bootstrap, priority 192
Uptime: 00:00:31, expires: 00:02:03
Embedded RP Groups:
Детали RP
Чтобы отобразить информацию о маршрутизаторе RP для конкретной группы, используйте следующую команду. Этот вывод показывает, что 2001:9::2 был выбран как RP для multicast группы ff02::1234.
Отображение результата на Switch2:
Switch# show ipv6 pim sparse-mode rp-hash ff02::1234
Info source: 2001:9::2, via bootstrap
После того как информация о RP достигнет всех маршрутизаторов PIMv6 в области, различные механизмы состояний поддерживают все состояния маршрутизации в результате Join/Prune на основе членства в группе. Для отображения информации о деталях интерфейсов и таблице маршрутизации multicast см. раздел "Настройка RP статически" выше.
Настройка Bootstrap Router (BSR)

Рисунок 13-2: BSR
Каждая группа PIMv6 multicast должна быть ассоциирована с IPv6-адресом Rendezvous Point (RP). Этот адрес используется как корень дерева распространения, специфичного для группы, чьи ветви распространяются ко всем узлам в области, которые хотят получать трафик, отправленный в эту группу. Для того чтобы все отправители могли достичь всех получателей, все маршрутизаторы в области используют одинаковые отображения адресов групп в адреса RP. Чтобы определить RP для multicast группы, маршрутизатор PIMv6 поддерживает коллекцию отображений group-to-RP, называемую RP-Set.
Механизм Bootstrap Router (BSR) для класса multicast маршрутизирующих протоколов в области PIMv6 использует концепцию Rendezvous Point как способ для получателей обнаружить источники, отправляющие данные в определенную multicast группу. Механизм BSR — это один из способов, с помощью которого multicast маршрутизатор может узнать набор отображений group-to-RP, необходимых для функционирования.
Некоторые маршрутизаторы PIMv6 в области настроены как кандидаты в RP (C-RP). Подмножество C-RP в конечном итоге будет использоваться как фактические RP для области. RP, настроенный с более низким значением в поле приоритета, имеет более высокий приоритет.
Некоторые маршрутизаторы PIMv6 в области настроены как кандидаты в BSR (C-BSR). Один из этих C-BSR выбирается как bootstrap маршрутизатор (BSR) для области, и все маршрутизаторы PIMv6 в области узнают результат этого выбора через BSM (Bootstrap сообщения). C-BSR с наивысшим значением в поле приоритета становится выбранным BSR.
Затем C-RP сообщает о своей кандидатуре выбранному BSR, который выбирает подмножество C-RP и распределяет соответствующие отображения group-to-RP всем маршрутизаторам в области через Bootstrap сообщения.
Следующую конфигурацию следует применить на всех коммутаторах, если идентификатор коммутатора не указан.
Шаг 1: Вход в режим настройки
Switch# configure terminal
Шаг 2: Включение IPv6 и глобальной маршрутизации для IPv6 multicast
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
Шаг 3: Настройка кандидата BSR
Настройка для Switch1:
Switch(config)# ipv6 pim bsr-candidate eth-0-1
Настройка для Switch2:
Switch(config)# ipv6 pim bsr-candidate eth-0-1 10 25
Шаг 4: Настройка кандидата RP
Настройка для Switch2:
Switch(config)# ipv6 pim rp-candidate eth-0-1 priority 0
Шаг 5: Вход в режим настройки интерфейса и установка атрибутов интерфейса
Настройка интерфейса для Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# ipv6 pim dr-priority 10
Switch(config-if)# ipv6 pim unicast-bsm
Switch(config-if)# exit
Шаг 6: Выход из режима настройки
Switch(config)# end
Шаг 7: Проверка
Проверка состояния C-BSR на rtr1:
Switch# show ipv6 pim sparse-mode bsr-router
PIM6v2 Bootstrap information
This system is the Bootstrap Router (BSR)
BSR address: 2001:9::1 (?)
Uptime: 00:01:27, BSR Priority: 64, Hash mask length: 126
Next bootstrap message in 00:00:16
Role: Candidate BSR
State: Elected BSR
Проверка состояния C-BSR на rtr2. Начальное состояние C-BSR — P-BSR, перед переходом в C-BSR:
Switch# show ipv6 pim sparse-mode bsr-router
PIM6v2 Bootstrap information
BSR address: 2001:9::1 (?)
Uptime: 00:01:34, BSR Priority: 64, Hash mask length: 126
Expires: 00:01:51
Role: Candidate BSR
State: Candidate BSR
Candidate RP: 2001:9::2(eth-0-9)
Advertisement interval 60 seconds
Next C-RP advertisement in 00:00:35
Проверка информации о RP-set на E-BSR:
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::2, via bootstrap, priority 0
Uptime: 00:45:37, expires: 00:02:29
Embedded RP Groups:
Проверка информации о RP-set на C-BSR:
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::1, via bootstrap, priority 0
Uptime: 00:03:14, expires: 00:01:51
Embedded RP Groups:
Настройка PIMv6-SSM feature
PIMv6-SSM может работать с PIMv6-SM на multicast маршрутизаторе. По умолчанию PIMv6-SSM отключен.
Шаг 1: Вход в режим настройки
Switch# configure terminal
Шаг 2: Включение PIMv6-SSM глобально
Switch(config)# ipv6 pim ssm default
Switch(config)# ipv6 pim ssm range ipv6acl
Шаг 3: Выход из режима настройки
Switch(config)# end